﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ERPWinFormWork.Sales
{
   // public static class AppConfig
   // {


   //     //public const string ApiBaseUrl = "http://47.96.9.93:8000/sales/api/";
   //     //public const string ApiBaseUrl = "http://localhost:5104/api/";

   //     private static string _apiBaseUrl;
   //     private static readonly Lazy<Task> _initializationTask;

   //     public static string ApiBaseUrl
   //     {
   //         get
   //         {
   //             // 等待初始化完成，返回已经加载的配置值
   //             if (_initializationTask.Value.IsCompleted)
   //             {
   //                 return _apiBaseUrl;
   //             }

   //             // 如果初始化还没有完成，返回默认值（可选）
   //             return "";
   //         }
   //     }

   //     static AppConfig()
   //     {
   //         // 使用 Lazy 初始化异步配置加载
   //         _initializationTask = new Lazy<Task>(InitializeConfigAsync);
   //     }

   //     private static async Task InitializeConfigAsync()
   //     {
   //         string key = "Salesoffline";  // Apollo 配置中的 Key
   //         string configValue = await ApolloConfigManager.GetConfigAsync(key);

   //         // 设置 API 基础 URL（如果未能获取到配置，使用默认值）
   //         _apiBaseUrl = configValue ?? "http://localhost:5104/api/";
          
   //     }
   

   //}

    public static class AppConfig
    {
        private static string _apiBaseUrl;
        private static readonly string _defaultApiUrl = "http://localhost:5104/api/";
        private static bool _isInitialized;

        public static string ApiBaseUrl
        {
            get
            {
                // 确保初始化完成（未完成时返回默认值避免卡顿）
                return _isInitialized ? _apiBaseUrl : _defaultApiUrl;
            }
        }



        // 程序启动时调用此方法预加载配置
        public static async Task InitializeAsync()
        {
            if (_isInitialized) return;

            try
            {
                string key = "OnLine";
                string configValue = await ApolloConfigManager.GetConfigAsync(key);
                _apiBaseUrl = configValue ?? _defaultApiUrl;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"配置加载失败: {ex.Message}");
                _apiBaseUrl = _defaultApiUrl;
            }
            finally
            {
                _isInitialized = true; // 无论成功失败都标记为已初始化
            }
        }
    }
}
